package cn.stylefeng.guns.modular.order.service;

import cn.stylefeng.guns.modular.order.domain.dto.OrderDTO;

import java.util.List;

/**
 * 订单中心对外提供的接口
 * @author allen
 * @version 1.0
 * @date 2021/4/11 22:28
 */
public interface OrderFacadeService {


    /**
     * 通知订单中心，订单完成发货 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informCommodityDeliveryFinishedEvent(Long orderId);

    /**
     * 通知订单中心， 退货工单审核拒绝 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsWorksheetRejectedEvent(Long orderId);


    /**
     * 通知订单中心， 退货工单审核通过 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsWorksheetApprovedEvent(Long orderId);


    /**
     * 通知订单中心， 财务中心完成退货打款 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsReceivedEvent(Long orderId);


    /**
     * 通知订单中心， 退货工单审核通过 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informReturnGoodsInputOrderApprovedEvent(Long orderId);


    /**
     * 通知订单中心， 财务中心完成退货打款 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informRefundFinishedEvent(Long orderId);



    /**
     * 通知订单中心， 订单评论 事件发生了
     * @param orderId 订单id
     * @return 处理结果
     */
    Boolean informPublishCommentEvent(Long orderId);


    /**
     * 请求订单中心， 获取确认收货超过7天而且还没发表评论的订单
     * @return 订单列表
     */
    List<OrderDTO> listNotPublishedCommentOrders();


    /**
     * 通知订单中心，批量发表了评论 事件发生了
     * @param orderIds 需要评论的订单id列表
     * @return 处理结果
     */
    Boolean informBatchPublishCommentEvent(List<Long> orderIds);
}
